package controle;

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map;

import modelo.Eleitor;
import modelo.Prefeito;
import modelo.Vereador;

public class EnviaDadosCliente implements Runnable {

	boolean modoVotacao;
	ServerSocket server;
	Socket porta;
	Map<String, Eleitor> eleitores;
	Map<String, Vereador> vereadores;
	Map<String, Prefeito> prefeitos;

	public EnviaDadosCliente(boolean votacao, ServerSocket server, Socket porta,
			Map<String, Eleitor> eleitores, Map<String, Vereador> vereadores,
			Map<String, Prefeito> prefeitos) {
		modoVotacao = votacao;
		this.server = server;
		this.porta = porta;
		this.eleitores = eleitores;
		this.vereadores = vereadores;
		this.prefeitos = prefeitos;
	}

	@Override
	public void run() {
		DataOutputStream escritor;
		ObjectOutputStream tradutor;
		boolean quit = false;

		while (quit == false) {
			try {
				escritor = new DataOutputStream(porta.getOutputStream());
				tradutor = new ObjectOutputStream(escritor);
				escritor.writeBoolean(modoVotacao);
				escritor.flush();
				tradutor.writeObject(eleitores);
				tradutor.flush();
				tradutor.writeObject(vereadores);
				tradutor.flush();
				tradutor.writeObject(prefeitos);
				tradutor.flush();
				escritor.close();
				tradutor.close();
				escritor = null;
				tradutor = null;
				porta = null;
				porta = server.accept();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public boolean isModoVotacao() {
		return modoVotacao;
	}

	public void setModoVotacao(boolean modoVotacao) {
		this.modoVotacao = modoVotacao;
	}

}
